perm filename PNEW.OLD[PNT,HE]1 blob sn#478475 filedate 1979-09-29 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	ENTRY
C00007 00003	PROCEDURE XERROR
C00010 ENDMK
C⊗;
ENTRY;
BEGIN "PNEW"
COMMENT routines which are not available in AL;
DEFINE $PNEW=TRUE,$ALTER_EGO=TRUE;
REQUIRE "HEADER.SAI" SOURCE_FILE;
IFC FALSE THENC
INTERNAL BOOLEAN PROCEDURE SSWAP(STRING COREIMAGEFILE);
BEGIN BOOLEAN NEWCOREIMAGE;
EXTERNAL INTEGER JOBSA;
INTEGER ARRAY ACS[0:15];	! temporary storage for accumulators;
INTEGER AACS0,AACS15,AACS14;	! address of ACS[0],ACS[15],ACS[14];
LABEL RESUME;
INTEGER ARRAY SAVADR[0:4];
INTEGER SWAPWORD;

	AACS0←LOCATION(ACS[0]);
	AACS15←LOCATION(ACS[15]);
	AACS14←LOCATION(ACS[14]);

	SAVADR[0]←CVSIX("DSK");
	SAVADR[1]←CVFIL(COREIMAGEFILE,SAVADR[2],SAVADR[4]);
	NEWCOREIMAGE←TRUE;
	SWAPWORD←LOCATION(SAVADR[0]) LSH 18;
PRESWAP;
	quick_code
		MOVEM	15,@AACS15;	COMMENT SAVE ACCUMS ;
		MOVE	15,AACS0;
		BLT	15,@AACS14;
		MOVEI	1,RESUME;
		MOVEM	1,JOBSA;
		MOVE	15,SWAPWORD;
		CALLI	15,'400004;	! swap to E ;
		SETZM	1,NEWCOREIMAGE;	! clear to return false if same core image ;
	RESUME:	JFCL	;		! no-op;
		JFCL	;		! restore accumulators;
		MOVS	15,AACS0; ! get address of AC[0];
		BLT	15,15;	  ! BLT into memory;
	end;
POSTSWAP;
RETURN(NEWCOREIMAGE);
END;

ENDC
PROCEDURE XERROR;
	ERROR(TOKEN," is a dummy statement, use some other word");


INTERNAL PROCEDURE FOOCALL(INTEGER I);
	XERROR;

END "PNEW"